home *** CD-ROM | disk | FTP | other *** search
- /* GadTools layout toolkit
- **
- ** Copyright © 1993-1995 by Olaf `Olsen' Barthel
- ** Freely distributable.
- */
-
- #include "gtlayout_global.h"
-
- VOID __regargs
- LTP_PlaceGroups(LayoutHandle *handle,ObjectNode *group,LONG left,LONG top)
- {
- if(!handle -> Failed)
- {
- ObjectNode *node;
- LONG plusLeft,
- plusTop,
- lastSpace;
-
- if(group -> Label || group -> Special . Group . Frame)
- {
- plusLeft = 4 + handle -> GlyphWidth + handle -> InterWidth + group -> Special . Group . ExtraLeft;
-
- if(group -> Label)
- plusTop = handle -> RPort . TxHeight + handle -> InterHeight + group -> Special . Group . ExtraTop;
- else
- plusTop = 2 + handle -> InterHeight + group -> Special . Group . ExtraTop;
- }
- else
- {
- plusLeft = group -> Special . Group . ExtraLeft;
- plusTop = group -> Special . Group . ExtraTop;
- }
-
- if(group -> ExtraSpace)
- {
- if(group -> Special . Group . ParentGroup -> Special . Group . Horizontal)
- left += handle -> InterWidth;
- else
- top += handle -> InterHeight;
- }
-
- group -> Left = left;
- group -> Top = top;
-
- left += plusLeft;
- top += plusTop;
-
- if(group -> Special . Group . Horizontal)
- {
- lastSpace = left;
-
- SCANGROUP(group,node)
- {
- if(LIKE_STRING_KIND(node) && node -> Special . String . LinkID != -1)
- handle -> Count++;
- else
- {
- if(node -> Type == GROUP_KIND)
- LTP_PlaceGroups(handle,node,lastSpace,top);
- else
- {
- node -> Left += left;
- node -> Top += top;
-
- handle -> Count++;
- }
-
- if(!group -> Special . Group . Paging)
- {
- lastSpace = node -> Left + node -> Width + handle -> InterWidth;
-
- if(node -> Type == MX_KIND)
- {
- if((node -> LabelPlace == PLACETEXT_RIGHT) || (node -> LabelPlace == PLACETEXT_LEFT))
- lastSpace += INTERWIDTH + node -> Special . Radio . LabelWidth;
- }
- }
- }
- }
- }
- else
- {
- lastSpace = top;
-
- SCANGROUP(group,node)
- {
- if(LIKE_STRING_KIND(node) && node -> Special . String . LinkID != -1)
- handle -> Count++;
- else
- {
- if(node -> Type == GROUP_KIND)
- LTP_PlaceGroups(handle,node,left,lastSpace);
- else
- {
- node -> Left += left;
- node -> Top += top;
-
- handle -> Count++;
- }
-
- if(!group -> Special . Group . Paging)
- lastSpace = node -> Top + node -> Height + handle -> InterHeight;
- }
- }
- }
- }
- }
-